﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Sofire.Data
{
    /// <summary>
    /// 分页基类。
    /// </summary>
    public abstract class PaginationBase
    {
        private int _Page;
        /// <summary>
        /// 设置或获取以 1 起始的页码。
        /// </summary>
        public int Page
        {
            get
            {
                return this._Page;
            }
            set
            {
                this._Page = value;
            }
        }

        private int _PageSize;
        /// <summary>
        /// 设置或获取分页大小。默认为 10。
        /// </summary>
        public int PageSize
        {
            get
            {
                return this._PageSize;
            }
            set
            {
                this._PageSize = value;
            }
        }

        /// <summary>
        /// 初始化 <see cref="Sofire.Data.PaginationBase"/> 的实例。
        /// </summary>
        public PaginationBase() : this(1, 10) { }

        /// <summary>
        /// 初始化 <see cref="Sofire.Data.PaginationBase"/> 的实例。
        /// </summary>
        /// <param name="page">页码。</param>
        /// <param name="pageSize">页大小。</param>
        public PaginationBase(int page, int pageSize)
        {
            this._Page = page;
            this._PageSize = pageSize;
        }

        /// <summary>
        /// 根据指定的数据库引擎获取分页数据。
        /// </summary>
        /// <param name="engine">数据库引起。</param>
        /// <returns>返回已分页的页码。</returns>
        public abstract TableResult Execute(QueryEngineBase engine);
    }
}
